package com.loft.model;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import com.loft.R;
import com.loft.comm.util.LogCenter;
import com.loft.comm.util.Utility;
import com.loft.model.face.BitmapCenter;
import com.loft.threadtask.BitmapAsynctask;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.BitmapFactory.Options;
import android.net.Uri;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Log;
import android.widget.ImageView;
import android.widget.Toast;

/**
 * @ClassName: ImageLoader
 * @Description:下载图片类
 * @CreateDate: 2012/04/18
 * @Version: v1.0.0
 * 
 */
public class ImageLoader extends BitmapCenter {

	public static final String TAG = "ImageLoader";
	private HashMap<String, Bitmap> _cache = new HashMap<String, Bitmap>();// Activity内缓存
	private Set<String> _urlSet = new HashSet<String>();
	private final int _img_default = R.drawable.dialog_circle;
	private File _cacheDir;
	private String _savePath;

	public ImageLoader(String savePath) {
		_savePath = savePath;
		if (Utility.checkNetIsConnected()) {
			_cacheDir = new File(_savePath);
			if (!_cacheDir.exists()) {
				_cacheDir.mkdirs();
			}
		}
	}

	@Override
	public List<Bitmap> download() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void loadBitmap(String url, ImageView imageView, String imageName) {
		try {
			if (url != null) {// 判断url是否为空
				if (_cache.containsKey(url)) {// 查找缓存是否存在此地址
					imageView.setImageBitmap(_cache.get(url));
				} else {
					File imgFile = new File(_savePath + "/" + imageName
							+ ".jpg");
					if (imgFile.exists()) {
						Bitmap bitmap = BitmapFactory.decodeFile(imgFile
								.getPath());
						if (bitmap != null) {
							imageView.setImageBitmap(bitmap);
						} else {
							imageView.setImageResource(_img_default);
						}
						_cache.put(url, bitmap);
					} else {
						imageView.setImageResource(_img_default);
						// 在gallery滚动过程中会出现反复启动下载线程的问题，
						// 因为一个url可能已经启动一个子线程开始下载了，
						// 但是还没下载完，adapter的getview方法再次调用这个方法
						// 这个时候可能会再启一遍同一幅图的下载
						// 这里建了一个set，当url第一次出现时进入下载线程，
						// 出现重复情况则跳过；
						// 当出现httpConnection TImeOut情况时，从该set里删除此url
						if (!_urlSet.contains(url)) {
							BitmapAsynctask task = new BitmapAsynctask(
									imageView, _cache, imgFile, _urlSet);
							task.execute(url);
							_urlSet.add(url);
						}
					}
				}
			} else {
				imageView.setImageResource(_img_default);
			}
		} catch (Exception e) {
			// return;
			e.printStackTrace();
		}
	}

}
